package com.szpx.controller.twoGroup;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.szpx.common.entity.ResponseData;
import com.szpx.common.entity.Result;
import com.szpx.common.entity.StatusCode;
import com.szpx.entity.UserInfo;
import com.szpx.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author: Hudson
 * @Version: 1.0
 * @Date: 2024/4/3 12:16
 * @Description: TODO
 */
@RequestMapping( "/twoGroup/userinfo" )
@Controller
public class UserInfoController {
	
	@Autowired
	private UserInfoService userInfoService;
	
	
	@GetMapping
	public ResponseEntity<Object> findAll() {
		List<UserInfo> userInfoList = userInfoService.findAll();
		// 构造成功响应
		ResponseData responseData = new ResponseData(0, "Success", userInfoList);
		return new ResponseEntity<>(responseData, HttpStatus.OK);
	}
	
	
	@GetMapping( "/{id}" )
	public String findById(@PathVariable( "id" ) Integer id, Model model) {
		UserInfo userinfo = userInfoService.findById(id);
		if (userinfo != null) {
			model.addAttribute("userinfo", userinfo);
			return "/lishihuiTeacherHtml/hsyHtml/userInfo_detail";
		} else {
			return null;
		}
	}
//	/**
//	 * 根据ID查询用户的信息
//	 * @param id
//	 * @return：
//	 * PathVariable注解：访问地址传递参数与形参进行绑定
//	 */
//	@GetMapping("/{id}")
//	public Result<UserInfo> findById(@PathVariable(value = "id") Integer id){
//		UserInfo userinfo = userInfoService.findById(id);
//		return new Result<UserInfo>(true, StatusCode.OK,"查询数据成功！",userinfo);
//	}
	
	@GetMapping( value = "/toadduserinfo" )
	public String toAddUserInfo() {
		return "/lishihuiTeacherHtml/hsyHtml/userInfo_add";
	}
	
	/**
	 * 新增用户的信息
	 *
	 * @param userInfo
	 * @return: RequestBody注解：请求内容，从前台获取到数据是JSON格式转换为对象
	 * ResponseBody注解：响应内容，从后台获取到数据转换为JSON格式显示前台
	 */
	@PostMapping( "/addUser" )
	public String addUser(UserInfo userInfo) {
		userInfoService.addUserInfo(userInfo);
		return "redirect:/twoGroup/userinfo/ulist";
	}

//	@PostMapping
//	public Result addUserInfo(@RequestBody UserInfo userinfo){
//		userInfoService.addUserInfo(userinfo);
//		return new Result(true, StatusCode.OK,"添加数据成功！");
//	}
	
	@RequestMapping( value = "toupdata/{id}" )
	public String updateUser(@PathVariable( "id" ) Integer id, Model model) {
		UserInfo userinfo = userInfoService.findById(id);
		if (userinfo != null) {
			model.addAttribute("userinfo", userinfo); //将查询出来的信息 传到修改页面
			return "/lishihuiTeacherHtml/hsyHtml/userInfo_update"; //逻辑视图
		} else {
			return null;
		}
	}
	
	@PutMapping( value = "/updateuser" )
	public String updateUser(UserInfo userInfo) {
		userInfoService.updateUserInfo(userInfo);
		return "redirect:/twoGroup/userinfo/ulist";
	}

//	/**
//	 * 修改用户的信息
//	 * @param userinfo
//	 * @param id
//	 * @return
//	 */
//	@PutMapping(value = "/{id}")
//	public ResponseEntity<String> updateUser(@PathVariable Integer id, @RequestBody UserInfo userinfo) {
//		userinfo.setId(id);
//		userInfoService.updateUserInfo(userinfo);
//		return ResponseEntity.ok("用户 ID： " + id + "已经被更新！");
//	}
	
	/**
	 * 删除用户的信息
	 *
	 * @param id
	 * @return
	 */
	@RequestMapping( "/deleteUser/{id}" )
	public String delUser(@PathVariable( "id" ) Integer id) {
		userInfoService.deleteUserInfo(id);
		return "redirect:/twoGroup/userinfo/ulist"; //重定向到用户列表请求
	}
//	@DeleteMapping(value = "/{id}")
//	public ResponseEntity<String> deleteUser(@PathVariable Integer id) {
//		// 根据id删除用户
//		// 这里的逻辑需要根据你的实际情况来实现
//		return ResponseEntity.ok("用户 ID: " + id + "已经被删除！");
//	}
	
	/**
	 * 多条件查询用户的信息，使用请求方式：post
	 *
	 * @param userinfo
	 * @return
	 */
	@PostMapping( value = "/search" )
	public Result<List<UserInfo>> findList(@RequestBody UserInfo userinfo) {
		List<UserInfo> list = userInfoService.findList(userinfo);
		return new Result<List<UserInfo>>(true, StatusCode.OK, "查询数据成功", list);
	}
	
	
	@GetMapping( "/ulist" )
	public String getList(
			@RequestParam( defaultValue = "1" ) int pno,
			@RequestParam( defaultValue = "10" ) int pageSize,
			UserInfo userinfo, Model model) {
		PageHelper.startPage(pno, pageSize); //开始分页
		List<UserInfo> userInfoList = userInfoService.findList(userinfo);
		PageInfo<UserInfo> page = new PageInfo<>(userInfoList);
		model.addAttribute("UserInfo", userInfoList); //将查询出来的数据放入model对象中
		model.addAttribute("page", page);
		model.addAttribute("name", userinfo.getName());
		model.addAttribute("sex", userinfo.getSex());
		model.addAttribute("pno", pno);
		return "/lishihuiTeacherHtml/hsyHtml/userInfo";
	}


//	/**
//	 * 分页查询用户的信息
//	 * @param page
//	 * @param size
//	 * @return
//	 */
//	@GetMapping(value = "/search/{page}/{limit}")
//	public Result<PageInfo<UserInfo>> findPage(@PathVariable int page, @PathVariable int limit){
//		PageInfo<UserInfo> pageInfo = userInfoService.findPage(page, limit);
//		return  new Result<PageInfo<UserInfo>>(true, StatusCode.OK,"分页查询数据成功",pageInfo);
//	}
//	/**
//	 * 多条件+分页查询用户的信息
//	 * @param userinfo
//	 * @param page
//	 * @param size
//	 * @return
//	 */
//	@PostMapping(value = "/search/{page}/{limit}")
//	public Result<PageInfo<UserInfo>> findPage(@RequestBody UserInfo userinfo,@PathVariable int page,@PathVariable int limit){
//		PageInfo<UserInfo> pageInfo = userInfoService.findPage(userinfo, page, limit);
//		return  new Result<PageInfo<UserInfo>>(true, StatusCode.OK,"查询数据成功",pageInfo);
//	}
//
}
